/**
 * 第7章 Spring AOP基础
 * 代码清单-r2ch07f-246页a：定义一个静态普通方法名匹配切面 {@link top.kaoshanji.r2ch07f.GreetingAdvisor}
 * 代码清单-r2ch07f-247页a：定义一个前置增强 {@link top.kaoshanji.r2ch07f.GreetingBeforeAdvice}
 * 代码清单-r2ch07f-247页b：配置静态方法匹配切面-r2ch07f/greeting-static-method-advisor-beans.xml
 * 代码清单-r2ch07f-248页a：测试一下静态普通方法名匹配切面 {@link top.kaoshanji.r2ch07f.GreetingStaticMethodAdvisorContext}
 * 代码清单-r2ch07f-248页a：配置正则表达式方法匹配切面-r2ch07f/greeting-regexp-method-advisor-beans.xml
 * 代码清单-r2ch07f-249页a：测试一下正则表达式方法名匹配切面 {@link top.kaoshanji.r2ch07f.GreetingRegexpMethodAdvisorContext}
 * 代码清单-r2ch07f-251页a：定义一个动态切点，检查方法入参值 {@link top.kaoshanji.r2ch07f.GreetingDynamicPointcut}
 * 代码清单-r2ch07f-252页a：配置动态方法切面-r2ch07f/greeting-dynamic-method-advisor-beans.xml
 * 代码清单-r2ch07f-252页b：测试一下动态方法切面 {@link top.kaoshanji.r2ch07f.GreetingDynamicMethodAdvisorContext}
 * 代码清单-r2ch07f-254页a：代理Waiter所有的方法调用 {@link top.kaoshanji.r2ch07f.WaiterDelegate}
 * 代码清单-r2ch07f-255页a：配置流程控制切面-r2ch07f/greeting-control-flow-advisor-beans.xml
 * 代码清单-r2ch07f-255页b：测试一下流程控制切面 {@link top.kaoshanji.r2ch07f.GreetingControlFlowAdvisorContext}
 * 代码清单-r2ch07f-257页a：定义一个复合切点 {@link top.kaoshanji.r2ch07f.GreetingComposablePointcut}
 * 代码清单-r2ch07f-257页b：配置复合切点切面-r2ch07f/greeting-composable-advisor-beans.xml
 * 代码清单-r2ch07f-258页a：测试一下复合切点切面 {@link top.kaoshanji.r2ch07f.GreetingComposableAdvisorContext}
 * 代码清单-r2ch07f-259页a：配置引介切面-r2ch07f/greeting-introduce-advisor-beans.xml
 * 代码清单-r2ch07f-01：测试一下引介增强 {@link top.kaoshanji.r2ch07f.GreetingIntroduceAdvisorContext}
 *
 * @author kaoshanji
 * ^_^
 * create time 2025/5/7 19:32
 */
package top.kaoshanji.r2ch07f;